union ValData
{
	struct { ulong code; Val* adata; } ObjectData;	
	struct { byte val; } ByteData;
	struct { short val; } ShortData;
	struct { int val; } IntData;
	struct { long val; } LongData;
	struct { ushort val; } UShortData;
	struct { uint val; } UIntData;
	struct { ulong val; } ULongData;
	struct { float val; } FloatData;
	struct { double val; } DoubleData; 
	struct { byte* val; } AByteData;
	struct { short* val; } AShortData;
	struct { int* val; } AIntData;
	struct { long* val; } ALongData;
	struct { ushort* val; } AUShortData;
	struct { uint* val; } AUIntData;
	struct { ulong* val; } AULongData;
	struct { float* val; } AFloatData;
	struct { double* val; } ADoubleData; 
};

/** The basic structure used by the VM. */
typedef struct 
{
	byte	flags;	/* Various flags. */
	byte	refs;	/* The number of references. */
	byte[2]	unused; /* Padding. */
	void*	type;	/* Type table information. */
	ValData	data;	/* Other data. */
} 
Val;	